﻿namespace LinkedTU.Data.Providers
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using LinkedTU.Common.Interfaces;
    using LinkedTU.Models;

    public class CityProvider : IClassificatorProvider<City>
    {
        public IEnumerable<City> GetClassificators()
        {
            var cities = new List<City>();

            #region Bulgaria

            var bulgaria = new Country() { DisplayName = "Bulgaria" };
            cities.Add(new City() { DisplayName = "Sofia", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Plovdiv", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Varna", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Burgas", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Vidin", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Veliko Tarnovo", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Blagoevgrad", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Dobrich", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Pleven", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Pliska", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Pernik", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Goce Delchev", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Sandanski", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Ruse", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Silistra", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Smolyan", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Sliven", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Pazardzhik", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Montana", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Kyustendil", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Kardzhali", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Lovech", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Dupnitza", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Bansko", Country = bulgaria });
            cities.Add(new City() { DisplayName = "Razlog", Country = bulgaria });

            #endregion

            #region US

            var us = new Country() { DisplayName = "United States" };
            cities.Add(new City() { DisplayName = "Washington", Country = us });
            cities.Add(new City() { DisplayName = "Philadelphia", Country = us });
            cities.Add(new City() { DisplayName = "Los Angeles", Country = us });
            cities.Add(new City() { DisplayName = "Chicago", Country = us });
            cities.Add(new City() { DisplayName = "California", Country = us });
            cities.Add(new City() { DisplayName = "Dallas", Country = us });
            cities.Add(new City() { DisplayName = "San Diego", Country = us });
            cities.Add(new City() { DisplayName = "Indianapolis", Country = us });
            cities.Add(new City() { DisplayName = "Oklahoma", Country = us });
            cities.Add(new City() { DisplayName = "Boston", Country = us });
            cities.Add(new City() { DisplayName = "Sakramento", Country = us });
            cities.Add(new City() { DisplayName = "Kansas", Country = us });
            cities.Add(new City() { DisplayName = "Miami", Country = us });
            cities.Add(new City() { DisplayName = "Madison", Country = us });

            #endregion

            #region UK

            var uk = new Country() { DisplayName = "United Kingdom" };
            cities.Add(new City() { DisplayName = "London", Country = uk });
            cities.Add(new City() { DisplayName = "Manchester", Country = uk });
            cities.Add(new City() { DisplayName = "Birmingham", Country = uk });
            cities.Add(new City() { DisplayName = "Newcastle", Country = uk });
            cities.Add(new City() { DisplayName = "Liverpool", Country = uk });
            cities.Add(new City() { DisplayName = "Leeds", Country = uk });
            cities.Add(new City() { DisplayName = "Glasgow", Country = uk });
            cities.Add(new City() { DisplayName = "Sheffield", Country = uk });
            cities.Add(new City() { DisplayName = "Bristol", Country = uk });
            cities.Add(new City() { DisplayName = "Cardiff", Country = uk });
            cities.Add(new City() { DisplayName = "Wigan", Country = uk });
            cities.Add(new City() { DisplayName = "Sunderland", Country = uk });
            cities.Add(new City() { DisplayName = "Doncaster", Country = uk });
            cities.Add(new City() { DisplayName = "Bolton", Country = uk });
            cities.Add(new City() { DisplayName = "Plymouth", Country = uk });
            cities.Add(new City() { DisplayName = "Wolverhampton", Country = uk });
            cities.Add(new City() { DisplayName = "Swansea", Country = uk });
            cities.Add(new City() { DisplayName = "Oldham", Country = uk });
            cities.Add(new City() { DisplayName = "York", Country = uk });

            #endregion

            #region France

            var fr = new Country() { DisplayName = "France" };
            cities.Add(new City() { DisplayName = "Paris", Country = fr });
            cities.Add(new City() { DisplayName = "Lyon", Country = fr });
            cities.Add(new City() { DisplayName = "Marseille", Country = fr });
            cities.Add(new City() { DisplayName = "Lille", Country = fr });
            cities.Add(new City() { DisplayName = "Bordeaux", Country = fr });
            cities.Add(new City() { DisplayName = "Nantes", Country = fr });
            cities.Add(new City() { DisplayName = "Nice", Country = fr });
            cities.Add(new City() { DisplayName = "Rennes", Country = fr });
            cities.Add(new City() { DisplayName = "Strasbourg", Country = fr });

            #endregion

            #region Germany

            var de = new Country() { DisplayName = "Germany" };
            cities.Add(new City() { DisplayName = "Berlin", Country = de });
            cities.Add(new City() { DisplayName = "Hambourg", Country = de });
            cities.Add(new City() { DisplayName = "Munich", Country = de });
            cities.Add(new City() { DisplayName = "Cologne", Country = de });
            cities.Add(new City() { DisplayName = "Frankfurt", Country = de });
            cities.Add(new City() { DisplayName = "Stuttgart", Country = de });
            cities.Add(new City() { DisplayName = "Dortmund", Country = de });
            cities.Add(new City() { DisplayName = "Bremen", Country = de });

            #endregion

            #region sp

            var sp = new Country() { DisplayName = "Spain" };
            cities.Add(new City() { DisplayName = "Madrid", Country = sp });
            cities.Add(new City() { DisplayName = "Barcelona", Country = sp });
            cities.Add(new City() { DisplayName = "Valencia", Country = sp });
            cities.Add(new City() { DisplayName = "Seville", Country = sp });
            cities.Add(new City() { DisplayName = "Zaragoza", Country = sp });
            cities.Add(new City() { DisplayName = "Malaga", Country = sp });
            cities.Add(new City() { DisplayName = "Las Palmas", Country = sp });
            cities.Add(new City() { DisplayName = "Cordoba", Country = sp });
            cities.Add(new City() { DisplayName = "Bilbao", Country = sp });
            cities.Add(new City() { DisplayName = "Elche", Country = sp });

            #endregion

            #region it

            var it = new Country() { DisplayName = "Italy" };
            cities.Add(new City() { DisplayName = "Rome", Country = it });
            cities.Add(new City() { DisplayName = "Turin", Country = it });
            cities.Add(new City() { DisplayName = "Genoa", Country = it });
            cities.Add(new City() { DisplayName = "Verona", Country = it });
            cities.Add(new City() { DisplayName = "Venice", Country = it });
            cities.Add(new City() { DisplayName = "Modena", Country = it });
            cities.Add(new City() { DisplayName = "Florence", Country = it });
            cities.Add(new City() { DisplayName = "Brescia", Country = it });

            #endregion

            return cities;
        }
    }
}